return {
    {    -- snippets引擎，不装这个自动补全会出问题
        "L3MON4D3/LuaSnip",
        -- dependencies = { "rafamadriz/friendly-snippets" },
        config = function()
            require("luasnip.loaders.from_vscode").lazy_load( { paths = { vim.fn.stdpath('config').."/my_snippets" } })
            require("luasnip").filetype_extend("typescript", { "tsdoc" })
            require("luasnip").filetype_extend("javascript", { "jsdoc" })
            require("luasnip").filetype_extend("lua", { "luadoc" })
            require("luasnip").filetype_extend("python", { "pydoc" })
            require("luasnip").filetype_extend("rust", { "rustdoc" })
            require("luasnip").filetype_extend("cs", { "csharpdoc" })
            require("luasnip").filetype_extend("java", { "javadoc" })
            require("luasnip").filetype_extend("c", { "cdoc" })
            require("luasnip").filetype_extend("cpp", { "cppdoc" })
            require("luasnip").filetype_extend("php", { "phpdoc" })
            require("luasnip").filetype_extend("kotlin", { "kdoc" })
            require("luasnip").filetype_extend("ruby", { "rdoc" })
            require("luasnip").filetype_extend("sh", { "shelldoc" })
        end
    }, 
    {'hrsh7th/cmp-nvim-lsp'}, -- { name = nvim_lsp }
    {'hrsh7th/cmp-buffer'},   -- { name = 'buffer' },
    {'hrsh7th/cmp-path'},     -- { name = 'path' }
    {'hrsh7th/cmp-cmdline'},  -- { name = 'cmdline' }
    {"saadparwaiz1/cmp_luasnip"}
}
